package com.learn.acm.one;

import com.google.gson.Gson;
import org.junit.jupiter.api.Test;

/**
 *88. 合并两个有序数组
 * 给你两个有序整数数组 nums1 和 nums2，请你将 nums2 合并到 nums1 中，使 nums1 成为一个有序数组。
 *
 *
 *
 * 说明：
 *
 * 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
 * 你可以假设 nums1 有足够的空间（空间大小大于或等于 m + n）来保存 nums2 中的元素。
 *
 *
 * 示例：
 *
 * 输入：
 * nums1 = [1,2,2,3,0,0], m = 3
 * nums2 = [2,5,6],       n = 3
 *
 * 输出：[1,2,2,3,5,6]
 *
 * nums1 = [1,2,3,7,10,12], m = 3
 * nums2 = [2,3,4,5,5],       n = 3
 *
 * 输出：[1,2,2,3,5,6]
 * 提示：
 *
 * -10^9 <= nums1[i], nums2[i] <= 10^9
 * nums1.length == m + n
 * nums2.length == n
 *
 * @author zhongshitao
 * @date 2020/12/24 11:28 上午
 */
public class Solution88 {


    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int p = m + n - 1;
        int p1 = Math.max(m - 1, 0);
        int p2 = n - 1;
        while (p1 >=0 && p2 >= 0) {
            int maxNums = nums1[p1] > nums2[p2] ? nums1[p1--] : nums2[p2--];
            nums1[p--] = maxNums;
        }
    }

    @Test
    public void test() {
        int[] nums1 = new int[]{1};
        int[] nums2 = new int[]{};
        merge(nums1,1,nums2,0);
        System.out.println(new Gson().toJson(nums1));

    }
}
